from apps.verifications.constant import YUNTONGXUN_EXPRIE_TIME
from libs.yuntongxun.sms import CCP
from celery_tasks.main import app
import logging
logger = logging.getLogger('django')

# 生产者需要单独创建一个包，包中的文件必须以tasks.py命名
# 生产者本质是一个函数
# 这个函数必须要经过celery的实例对象的task装饰器来装饰
# 这个任务需要让celery自动检测

@app.task(bind=True,default_retry_delay=3,name='send_sms') # bind=True 表示把任务自己传递过去，这样就可以在任务的第一个参数中传递self
def send_sms_code(self,mobile,sms_code):
    try:
        result = CCP().send_template_sms(mobile, [sms_code, YUNTONGXUN_EXPRIE_TIME], 1)
        if result != 0:
            raise Exception('失败！')
    except Exception as exc:
        logger.error(exc)
        # max_retries 设置的最大重试次数
        raise self.retry(exc=exc,max_retries=3)
